home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (fpu).sea / pro Fit 5.0 demo (fpu) / Examples / Programming - intro / Test equality < prev    next >
Text File  |  1996-04-15  |  1KB  |  36 lines

  1. {
  2. This is a simple example that shows how to access the data window
  3. from a program. To run the program, click the button "Add", then choose
  4. the program "DataTest" from the menu "Misc".
  5.  
  6. This program compares the numbers in the first two columns of the
  7. frontmost data window and writes '1' in the third column if they are
  8. equal. Otherwise it writes a zero. If the cells of the first two columns
  9. are empty, it erases the corresponding cell in the third column. When
  10. it has finished, it writes the string 'done' into the results window.
  11. }
  12.  
  13. program DataTest;
  14.  
  15. var i: integer;
  16.  
  17.   function TestEquality(x,y:real):Boolean;
  18.     { returns true if x and y are equal or nearly equal }
  19.      const epsilon =1e-7;
  20.   begin
  21.     if (x=0) and (y=0) then TestEquality := true
  22.     else TestEquality := abs(abs(x)-abs(y))/(abs(x)+abs(y)) < epsilon;
  23.   end;
  24.  
  25. begin
  26.   for i := 1 to nrRows do                          {loop through all rows}
  27.     if DataOK(i,1) and DataOK(i,2) then            {if there is data in both columns}
  28.             begin
  29.                     if TestEquality(data[i,1],data[i,2]) then  {if the two columns are substantially equal}
  30.                    data[i,3] := 1
  31.                else data[i,3] := 0;                      {if not equal}
  32.              end
  33.          else ClearData(i,3);                         {erase cell in column 3}
  34.   Writeln('done');
  35. end;
  36.